/* UNIVERSIDADE FEDERAL DE CAMPINA GRANDE - UFCG
 * Disciplina: Laboratorio de Estrutura de Dados
 * Professor: Marco Aurelio Spohn
 * Alunos: Alexandre Sales Vasconcelos       Mat.: 20621146
 * Atividade 7
 */

/**
 * Classe que implementa um no para a AVL
 *
 * @version 1.0 2008/06/13
 * @author Alexandre Sales Vasconcelos
 * @see <a href="http://lab.eda.ufcg.googlepages.com/avltree"> Atividade 7 Problema 1 </a>
 */

public class Node {
	
	private int key;
	private Node father;
	private Node left;
	private Node right;

	/**
	 * Construtor com a chave do no como parametro
	 * 
	 * @param key chave do no
	 */
	public Node(int key) {
		this.key = key;
		father = null;
		left = null;
		right = null;
	}

	/**
	 * Construtor sem parametros
	 */
	public Node() {
		father = null;
		left = null;
		right = null;
	}
	
	/**
	 * Metodo que retorna o valor da chave do no
	 * 
	 * @return int com a chave do no
	 */
	public int getKey() {
		return key;
	}
	
	/**
	 * Metodo que retorna o no pai.
	 * 
	 * @return Node no pai.
	 */
	public Node getFather() {
		return father;
	}

	/**
	 * Metodo que retorna o no filho esquerdo.
	 * 
	 * @return Node no filho esquerdo.
	 */
	public Node getLeft() {
		return left;
	}

	/**
	 * Metodo que retorna o no filho direito.
	 * 
	 * @return Node no filho direito.
	 */
	public Node getRight() {
		return right;
	}

	/**
	 * Metodo que seta a chave do no.
	 * 
	 * @param key valor ser setado na chave do no.
	 */
	public void setKey(int key) {
		this.key = key;
	}

	/**
	 * Metodo que seta o pai do no.
	 * 
	 * @param father No a ser setado como pai do no.
	 */
	public void setFather(Node father) {
		this.father = father;
	}
	
	/**
	 * Metodo que seta o filho esquerdo do no.
	 * 
	 * @param left No a ser setado como filho esquerdo.
	 */
	public void setLeft(Node left) {
		this.left = left;
	}
	
	/**
	 * Metodo que seta o filho direito do no.
	 * 
	 * @param right No a ser setado como filho direito.
	 */
	public void setRight(Node right) {
		this.right = right;
	}
}
